package net.openl10n.packaging;

import com.google.common.collect.ImmutableList;

public interface AnnotationSource {

	public <T> T getAnnotation(Class<T> clz);
	
	public <T> ImmutableList<T> getAnnotations(Class<T> clz);
	
	public <T> void addAnnotation(T annotation);

	public <T> void addAnnotation(Class<? super T> clz, T annotation);

	public <T> void removeAnnotation(T annotation);
	
	public <T> void removeAnnotations(Class<T> clz);
}
